package com.itcam.phaselist.set_;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * Set<p>
 * 特点：<p>
 * 1.无序，没有索引<p>
 * 2.不允许重复元素，所以最多包含一个null<p>
 * 3.JDK API中Set接口的实现类（主要）:HashSet、TreeSet<p>
 * Set和List接口一样, Set接口也是Collection的子接口，因此，常用方法和Collection接口一样.<p>
 */
public class SetMethod {

    public static void main(String[] args) {
        //1. 以Set接口的实现类HashSet来讲解Set接口的方法
        //2. set接口的实现类的对象(Set接口对象), 不能存放重复的元素, 可以添加一个null
        //3. set接口对象存放数据是无序(即添加的顺序和取出的顺序不一致)
        //4. 注意：取出的顺序的顺序虽然不是添加的顺序，但是他的固定.

        Set set = new HashSet();

        set.add("cammy");
        set.add("lucy");
        set.add("john");
        set.add("cammy"); // 重复的不被添加

        System.out.println("set=" + set);

        // 遍历
        // 方式1：使用迭代器
        System.out.println("\n=====使用迭代器====");
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.print(next + "\t");
        }

        // 方式2：增强for循环
        System.out.println("\n=====增强for====");
        for (Object o : set) {
            System.out.print(o + "\t");
        }
    }
}
